package com.gateway.server;

import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.http.HttpMethod;
import org.springframework.stereotype.Component;

import java.time.ZonedDateTime;

/**
 * @Author:RenPu
 * @Date: 2020/10/27 17:15
 * @Version: 1.0
 * @description: 1：gateway断言既可以通过java代码编写，又可以通过在配置文件里进行配置
 */

@Configuration
public class GatewayConfirgration {


    @Bean
    @Order
    public RouteLocator customizedRoutes(RouteLocatorBuilder builder) {


        return builder.routes()
                .route(r -> r.path("/java/**")   //请求首先满足此路径设置的规则
                        .and().method(HttpMethod.GET)    //设置请求的具体的方式
                        .and().header("name")             //请求的header里必须要包含此处设置的值
                        .filters(f -> f.stripPrefix(1)      //此处的设置的含义，将/java/**路径中，下标为1的去掉，也就是现在的java
                                .addResponseHeader("java-param", "gateway-config")
                        ).uri("lb://FEGIN-PROVIDER")      //设置去具体访问的，负载均衡的服务
                )
                .route(r -> r.path("/skill/**")
                        .and().after(ZonedDateTime.now().plusMinutes(1))  //设置秒杀时间的开启时间，启动服务延后一分钟开启
                        .filters(f -> f.stripPrefix(1))
                        .uri("lb://FEGIN-PROVIDER")
                )
                .build();

    }


}
